<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    function Person(name){
      this.name = name 
    }
    //修改原型
    Person.prototype.getName = function(){}
    var p = new Person('hello')
    //画图 画图 画个图 啥都解开
    console.log(p.__proto__ === Person.prototype)//true
    console.log(p.__proto__ === p.constructor.prototype)//true
    
    // 重写原型
    //因为这里是直接把对象赋值给了 prototype 所以 prototype 之前的 都覆盖掉了 把之前的constructor弄没了 所以 下面那个会报错
    Person.prototype = {
      getName : function(){}
    }
    var p = new Person('hello')
    console.log(p.__proto__ === Person.prototype)//true
    console.log(p.__proto__ === p.constructor.prototype)//false
    

    //解决方案 
    //在吧 constructor 指回Person
    Person.prototype = {
      getName : function(){}
    }
    var p = new Person('hello')
    p.constructor = Person
    console.log(p.__proto__ === Person.prototype)//true
    console.log(p.__proto__ === p.constructor.prototype)//true
  </script>
</body>
</html>